import microApp from '@micro-zoe/micro-app'
export interface MicroAppOptions {
  // 应用名称
  name: string
  // 应用路径
  path: string
  // 应用前缀
  prefix: string
  // 是否vite编译, vite需要特殊编译
  isVite?: boolean
}

export const apps: MicroAppOptions[] = [
  {
    name: 'app1',
    path: 'http://localhost:8002',
    prefix: '/app1/'
  }
]

export function setupMicroApp() {
  const modules: Recordable = {}
  apps.forEach((app) => {
    modules[app.name] = [
      {
        loader(code) {
          if (process.env.NODE_ENV === 'development') {
            // 这里 basename 需要和子应用vite.config.js中base的配置保持一致
            // 处理引入的应用模块路径无法访问的问题
            code = code.replace(/(from|import)(\s*['"])(\/app1\/)/g, (all) => {
              return all.replace(app.prefix, app.path + app.prefix)
            })
          }

          return code
        }
      }
    ]
  })

  // 挂载微应用
  microApp.start({
    plugins: {
      modules
    }
  })
}
